home *** CD-ROM | disk | FTP | other *** search
/ Spanish Scene 1 / SpanishScene1.iso / spanish pack n°1 by llfb / --llfb-- / programas / sources1.dms / sources1.adf / SOURCES / Vectores / 3D.ASM next >
Assembly Source File  |  1996-06-04  |  18KB  |  836 lines

  1. ; MADE BY EKINOX
  2. ; 3d USANDO ALGORITMO DE CARAS OCULTAS 
  3. ; BASADO EN EL CALCULO DE VECTORES FISICOS
  4.  
  5.  
  6.     SECTION    SCROLL,CODE_C
  7.  
  8.  
  9. POINTS    EQU    32
  10. DEC    EQU    6
  11. ; DATOS 3D
  12.  
  13. STEPS    EQU    1
  14. INCRX    EQU    4
  15. INCRY    EQU    2
  16. INCRZ    EQU    3
  17. ORIGENX    EQU    160
  18. ORIGENY    EQU    128
  19.  
  20. DESPX    equ    0
  21. DESPY    equ    0
  22. DESPZ    equ    0
  23.  
  24. OBJ    equ    150
  25.  
  26.     movem.l    d0-a6,-(a7)
  27.     bsr    METEPLANO
  28.     bsr    DESPCUBE
  29.     bsr    INTERRUPTS
  30.     bsr    PROGRAM
  31.     bsr    END
  32.     movem.l    (a7)+,d0-a6
  33.     RTS
  34. METEPLANO
  35.     lea    PLANING(pc),a0
  36.     move.l    #SHOW2,d0
  37.     move.w    d0,6(a0)
  38.     move.w    d0,14(a0)
  39.     swap    d0
  40.     move.w    d0,2(a0)
  41.     move.w    d0,10(a0)
  42.     rts
  43.  
  44. DESPCUBE
  45.     lea    CUBO(pc),a0
  46.     move.w    #POINTS-1,d7
  47.  
  48. DESP2    movem.w    (a0),d0-d2
  49.     add.w    #DESPX,d0
  50.     add.w    #DESPY,d1
  51.     add.w    #DESPZ,d2
  52.     movem.w    d0-d2,(a0)
  53.     addq    #6,a0
  54.     dbra    d7,DESP2
  55.     rts
  56.  
  57.  
  58. INTERRUPTS
  59.     lea    $dff000,a6
  60.     move.w    $2(a6),SAVEDMA
  61.     move.w    $1c(a6),SAVEINT
  62.     move.w    $1e(a6),SAVEINTREK
  63.     move.w    #$7fff,$9a(a6)
  64.     move.w    #$7fff,$96(a6)
  65.     
  66.     move.l    $6c,SAVE6C
  67.     move.l    #IRQ,$6c
  68.     
  69.     move.w    #$c028,$9a(a6)
  70.     move.w    #%1100001111000000,$96(a6)
  71.  
  72.     move.l    #COPPER,$84(a6)
  73.     CLR.W    $8a(a6)
  74.     rts
  75. END
  76.  
  77.     move.l    SAVE6C,$6c
  78.  
  79.     or.b    #$80,SAVEDMA
  80.     or.b    #$80,SAVEINT
  81.     or.b    #$80,SAVEINTREK
  82.     move.w    SAVEDMA,$96(a6)
  83.     move.w    SAVEINT,$9A(a6)
  84.     move.w    SAVEINTREK,$9C(a6)
  85.     RTS
  86. SAVEDMA
  87.     DC.W    0
  88. SAVEINT
  89.     DC.W    0
  90. SAVEINTREK
  91.     DC.W    0
  92.  
  93. SAVE6C    dc.l    0
  94.  
  95. SYNC    dc.w    0
  96.  
  97.  
  98. IRQ
  99.     movem.l    d0-a6,-(a7)
  100.     move.b    #1,SYNC
  101.     bsr    TECLADO
  102.     movem.l    (a7)+,d0-a6
  103.     move.w    #$20,$dff09c
  104.     rte    
  105.  
  106. PROGRAM
  107.     lea    SINUSTAB(pc),a4
  108.     lea    SHOW(pc),a5
  109.  
  110. PRG2
  111.     lea    ZP(pc),a1
  112.     movem.w    (a1)+,d0-d2
  113.     add.w    d0,ZANGLE
  114.     add.w    d1,YANGLE
  115.     add.w    d2,XANGLE
  116.  
  117. ;    move.w    #$f0,$180(a6)
  118.  
  119.     bsr    GETSINUS
  120.     bsr    OCULTA
  121.  
  122. ;    move.w    #$0f00,$180(a6)
  123.  
  124.     btst    #6,$BFE001
  125.     bne.s    PRG2
  126.     rts
  127.  
  128. GETSINUS
  129.     cmp.w    #359,ZANGLE
  130.     bls.s    GET2
  131.     clr.w    ZANGLE
  132.  
  133. GET2    move.w    ZANGLE,d0    
  134.     lsl.w    #2,d0        ;SENO CORRESPONDIENTE A Z
  135.     move.w    (a4,d0.W),ZSIN
  136.     move.w    2(a4,d0.W),ZCOS
  137.  
  138.     cmp.w    #359,YANGLE
  139.     bls.s    GET3
  140.     clr.w    YANGLE
  141. GET3    move.w    YANGLE,D0
  142.     lsl.w    #2,D0        ;SENO CORRESPONDIENTE A Y
  143.     move.w    (a4,d0.W),YSIN
  144.     move.w    2(a4,d0.W),YCOS
  145.  
  146.     CMP.W    #359,XANGLE
  147.     BLS    GET4
  148.     CLR.W    XANGLE
  149. GET4    move.w    XANGLE,D0
  150.     LSL.W    #2,D0        ;SENO CORRESPONDIENTE A X
  151.     move.w    (A4,D0.W),XSIN
  152.     move.w    2(A4,D0.W),XCOS
  153. ROTATE
  154.     LEA    CUBO,A1
  155.     LEA    ROTS,A2
  156.     lea    ZSIN(pc),a3
  157.  
  158.     move.l    #POINTS-1,D0
  159. ROT2
  160.     move.w    (a3),D1        ;AQUI ROTAMOS Z
  161.     move.w    2(a3),D2
  162.     move.w    (A1),D3        ;D3 = X
  163.     move.w    2(A1),D4    ;D4 = Y
  164.     MULS    D2,D3        ;
  165.     MULS    D1,D4        ;X * COS(Z) - Y * SIN(Z) = X4
  166.     SUB.L    D3,D4        ;
  167.     LSR.L    #8,D4
  168.     LSR.L    #6,D4
  169.     move.w    D4,D7        ;D7 = X4
  170.     move.w    (A1)+,D3    ;D3 = X
  171.     move.w    (A1)+,D4    ;D4 = Y
  172.     MULS    D2,D4        ;
  173.     MULS    D1,D3         ;X * COS(Z) + Y * SIN(Z) = Y4
  174.     add.l    D3,D4        ;
  175.     LSR.L    #8,D4
  176.     LSR.L    #6,D4
  177.     move.w    D4,D6        ;D6 = Y4    
  178.  
  179.     move.w    4(a3),D1    ;AQUI ROTAMOS Y
  180.     move.w    6(a3),D2
  181.     move.w    (A1),D3        ;D3 = Z
  182.     move.w    D7,D4        ;D4 = X4
  183.     MULS    D2,D3        ;
  184.     MULS    D1,D4        ;Z * COS(Y) - X4 * SIN(Y) = X3
  185.     SUB.L    D3,D4        ;
  186.     LSR.L    #8,D4
  187.     LSR.L    #6,D4
  188.     move.w    D4,D5        ;D5 = X3
  189.     move.w    (A1)+,D3    ;D3 = Z
  190.     move.w    D7,D4        ;D4 = X4
  191.     MULS    D1,D3        ;
  192.     MULS    D2,D4        ;Z * SIN(Y) + X4 * COS(Y) = Y3
  193.     add.l    D3,D4        ;
  194.     LSR.L    #8,D4
  195.     LSR.L    #6,D4    
  196. ;    add.w    XDESP,D4
  197.     move.w    D4,(A2)+    ; D4 = Y3 PRIMER VALOR DEFINITIVO X
  198.  
  199.     move.w    8(a3),D1        ; POR ULTIMO ROTAMOS X
  200.     move.w    10(a3),D2
  201.     move.w    D6,D3        ;D3 = Y4
  202.     move.w    D5,D4        ;D4 = X3
  203.     MULS    D2,D3        ;
  204.     MULS    D1,D4        ;Y4 * COS(X) - X3 * SIN(X) = X2
  205.     SUB.L    D3,D4        ;
  206.     LSR.L    #8,D4
  207.     LSR.L    #6,D4    
  208. ;    add.w    YDESP,D4
  209.     move.w    D4,(A2)+    ; D4 = X2 SEGUNDO VALOR DEFINITIVO Y
  210.     move.w    D6,D3
  211.     move.w    D5,D4
  212.     MULS    D1,D3        ;
  213.     MULS    D2,D4        ;Y4 * SIN(X) + X3 * COS(X) = Y2
  214.     add.l    D3,D4        ;
  215.     LSR.L    #8,D4
  216.     LSR.L    #6,D4
  217. ;    add.w    ZDESP,D4
  218.     move.w    D4,(A2)+    ; D4 = Y2 TERCER VALOR DEFINITIVO Z
  219.     DBF    D0,ROT2
  220.     rts
  221.  
  222. ;    *************************************************
  223. ;    *    RUTINA DE ELIMINACION DE CARAS OCULTAS    *
  224. ;    * A2 : TABLA DE CARAS                *
  225. ;    *************************************************
  226.  
  227. VVISION    dc.w    0,0,OBJ
  228. VEKTOR    ds.w    3
  229. SAVEP    ds.w    3
  230. SAVEQ    ds.w    3
  231. CURDAT    ds.w    3
  232. ;*** ROTACIONES ***
  233.  
  234. ROTS    dcb.W    POINTS*3
  235.  
  236.  
  237. OCULTA
  238.     lea    VEKTOR(pc),a1
  239.     lea    CONCUBO(pc),a2
  240.     lea    ROTS(pc),a3
  241.     bsr    CLEAREG
  242.  
  243. OCULTA2
  244.     move.b    1(a2),d0
  245.     bmi    FOCULT
  246.     clr.b    (a2)
  247.  
  248.     move.w    2(a2),d3
  249.     movem.w    (a3,d3.w),d1-d3    ;d1 = x1
  250.  
  251.     move.w    4(a2),d6
  252.     movem.w    (a3,d6.w),d4-d6    ;d4 = x2
  253.     
  254.     movem.w    d1-d3,18(a1)
  255.  
  256.     
  257.     sub.w    d4,d1
  258.     sub.w    d5,d2
  259.     sub.w    d6,d3
  260.  
  261.     movem.w    d1-d3,6(a1)    
  262.  
  263.     move.w    8(a2),d6
  264.     movem.w    (a3,d6.w),d4-d6    ;d4 = x2
  265.     
  266.     movem.w    18(a1),d1-d3
  267.     
  268.     sub.l    d4,d1            ;d1 = q1
  269.     sub.l    d5,d2            ;d2 = q2
  270.     sub.l    d6,d3            ;d3 = q3
  271.  
  272.     movem.w    d1-d3,12(a1)    
  273.  
  274.     movem.w    6(a1),D4-d6        ;d4 = p1
  275.                     ;d5 = p2
  276.                     ;d6 = p3
  277.     muls    d5,d3
  278.     muls    d2,d6
  279.     sub.l    d3,d6
  280.     
  281.     move.w    d6,(a1)
  282.     
  283.     movem.w    6(a1),d1-d6        ;d1 = p1 ; d4 = q1
  284.                     ;d2 = p2 ; d5 = q2
  285.                     ;d3 = p3 ; d6 = q3
  286.     muls    d3,d4
  287.     muls    d6,d1
  288.     sub.w    d4,d1
  289.     move.w    d1,2(a1)
  290.     
  291.     movem.w    6(a1),d1-d6        ;d1 = p1 ; d4 = q1
  292.                     ;d2 = p2 ; d5 = q2
  293.                     ;d3 = p3 ; d6 = q3
  294.     muls    d1,d5
  295.     muls    d4,d2
  296.     sub.w    d5,d2
  297.     move.w    d2,4(a1)
  298.  
  299. ;    Hasta aqui hemos hallado el vector de una cara ahora tenemos
  300. ;    que hallar el vector entre un vertice de esta cara y el observador
  301. ;    Vulgo: VECTOR DE VISION
  302.  
  303.     movem.w    -6(a1),d1-d3
  304.     movem.w    18(a1),d4-d6    
  305.  
  306.     sub.w    d1,d4
  307.     sub.w    d2,d5
  308.     sub.w    d3,d6
  309.     
  310.     movem.w    (a1),d1-d3
  311.     
  312.     muls    d4,d1
  313.     muls    d5,d2
  314.     muls    d6,d3
  315.  
  316.     add.l    d1,d2
  317.     add.l    d2,d3
  318.     bpl.s    OCULTA3
  319.     move.b    #1,(a2)
  320. OCULTA3
  321.     adda.l    d0,a2
  322.     bra    OCULTA2
  323. CLEAREG
  324.     moveq    #0,d0
  325.     moveq    #0,d1
  326.     moveq    #0,d2
  327.     moveq    #0,d3
  328.     moveq    #0,d4
  329.     moveq    #0,d5
  330.     moveq    #0,d6
  331.     rts
  332.  
  333. FOCULT    
  334.  
  335. CALPERS
  336.     LEA    ROTS,A2
  337.     LEA    ROTS,A3
  338.     move.l    #POINTS-1,D0
  339. CAL2
  340.     move.w    DIST,D1
  341.     move.w    4(A2),D2
  342.     add.w    ZDESP,D2    ;DESPLAZA Z
  343.     SUB.W    D2,D1
  344.     EXT.L    D1
  345.     LSL.W    #8,D1
  346.     move.w    ZOBJ,D3
  347.     EXT.L    D3
  348.     SUB.W    D2,D3
  349.     BNE    CAL3        
  350.     CLR.L    (A3)+
  351.     CLR.W    (A3)+
  352.     ADDA.L    #6,A2
  353.     BRA    CALFIN
  354. CAL3    
  355.     DIVS    D3,D1
  356.     move.w    (A2)+,D2
  357.     add.w    XDESP,D2    ;DESPLAZA X
  358.     move.w    D2,D3
  359.     NEG.W    D3
  360.     MULS    D1,D3
  361.     LSR.L    #8,D3
  362.     add.w    D2,D3
  363.     move.w    D3,(A3)+    ;X VERDADERA
  364.  
  365.     move.w    (A2)+,D2
  366.     add.w    YDESP,D2
  367.     move.w    D2,D3
  368.     NEG.W    D3
  369.     MULS    D1,D3
  370.     LSR.L    #8,D3
  371.     add.w    D2,D3
  372.     NEG.W    D3
  373.     move.w    D3,(A3)+    ;Y VERDADERA
  374.     
  375. CALFIN    ANDI.W    #-1,(A2)+
  376.     ANDI.W    #-1,(A3)+
  377.     DBF    D0,CAL2
  378.  
  379. VPOS    
  380. ;    tst.b    SYNC
  381. ;    beq.s    VPOS
  382. ;    clr.b    SYNC
  383.  
  384.     cmp.b    #$1,$6(a6)
  385.     bne.s    VPOS
  386.  
  387.     bsr    BORRA
  388. DISPLAY
  389.     LEA    ROTS,A0
  390.     LEA    CONCUBO,A1
  391.     bsr    DIBOBJECT
  392.     RTS
  393.  
  394. POINT
  395.     move.w    D0,D5
  396.     AND.W    #$7,D0
  397.     LSR.W    #3,D5
  398.     move.w    D1,D4
  399.     LSL.W    #5,D1
  400.     LSL.W    #3,D4
  401.     add.w    D4,D1
  402.     add.w    D5,D1
  403.     NOT.W    D0
  404.     BSET    D0,(A6,D1.W)
  405.     BSET    D0,40(A6,D1.W)
  406.     RTS
  407.  
  408. DIBOBJECT
  409.     move.l    a1,d6
  410.     moveq    #0,d0
  411.     move.b    (a1)+,d0
  412.     bmi    FIN
  413.     bne    NOFACE
  414.     moveq    #0,d7
  415.     move.b    (a1)+,d7
  416.     lsr.b    #2,d7
  417.     sub.w    #1,d7
  418. DIBOBJ2    
  419.     moveq    #0,d0
  420.     MOVEQ.L    #0,D1
  421.     MOVEQ.L    #0,D3
  422.     MOVEQ.L    #0,D5
  423.     MOVEQ.L    #0,D4
  424.     MOVEQ.L    #0,D2
  425.  
  426.     move.w    (A1)+,D1
  427.     move.w    (A0,D1.W),D0
  428.     move.w    2(A0,D1.W),D1
  429.     
  430.     move.w    (A1)+,D3
  431.     move.w    (A0,D3.W),D2
  432.     move.w    2(A0,D3.W),D3
  433.     ADDI.W    #ORIGENX,D0
  434.     ADDI.W    #ORIGENY,D1
  435.     ADDI.W    #ORIGENX,D2
  436.     ADDI.W    #ORIGENY,D3
  437.     move.l    ACTSCREEN+4(pc),a5
  438.     bsr    LINES
  439.  
  440.     dbra    d7,DIBOBJ2
  441.  
  442. NOFACE    movea.l    d6,a1
  443.     moveq    #0,d0
  444.     move.b    1(a1),d0
  445.     adda.l    d0,a1
  446.     BRA    DIBOBJECT
  447. FIN    rts
  448.  
  449.  
  450. ;    *************************************************
  451. ;    *    RUTINA DE LINEAS POR BLITTER        *
  452. ;    *                        *
  453. ;    * PARAMETROS:                    *
  454. ;    * D0 = X1 ; D1 = Y1; D2 = X2 ; D3 = Y2        *
  455. ;    * A5 = COMIENZO DE LA PANTALLA            *
  456. ;    * REQUISITOS:                    *
  457. ;    *  A6 PERMANENTEMENTE CON $DFF000        *
  458. ;    *************************************************
  459.  
  460. OCT1    EQU    $18+1
  461. OCT2    EQU    $4+1
  462. OCT3    EQU    $C+1
  463. OCT4    EQU    $1C+1
  464. OCT5    EQU    $14+1
  465. OCT6    EQU    $8+1
  466. OCT7    EQU    $0+1
  467. OCT8    EQU    $10+1
  468.  
  469.  
  470. LINES
  471.     cmp.w    d1,d3
  472. ;    bne.s    LINES2
  473. ;    bra.s    DIBOBJ2
  474. LINES2
  475.     bhi.s    NOCHANGE
  476.     exg    d0,d2
  477.     exg    d1,d3
  478. NOCHANGE
  479.     sub.w    d1,d3
  480.     sub.w    d0,d2
  481.     bpl.s    XPOS
  482.     neg.w    d2
  483.     moveq    #OCT6,d4
  484.     cmp.w    d3,d2
  485.     bcs.s    LINEYA
  486.     moveq    #OCT5,d4
  487.     exg    d2,d3
  488.     bra.s    LINEYA
  489. XPOS
  490.     moveq    #OCT7,d4
  491.     cmp.w    d3,d2
  492.     bcs.s    LINEYA
  493.     moveq    #OCT8,d4
  494.     exg    d2,d3
  495. LINEYA
  496.     move.w    d1,d5
  497.     lsl.w    #5,d1
  498.     lsl.w    #3,d5
  499.     add.w    d5,d1
  500.     add.l    d1,a5
  501.     move.w    d0,d1
  502.     lsr.w    #4,d1
  503.     add.w    d1,d1
  504.     add.w    d1,a5
  505.  
  506.     add.w    d2,d2
  507.     move.w    d2,d5
  508.     sub.w    d3,d5
  509.     cmp.w    d2,d3
  510.     bcs.s    LINESIGN
  511.     bset    #6,d4
  512. LINESIGN
  513.     andi.w    #15,d0
  514.     add.w    d0,d0
  515.     move.w    LINESHIFT(pc,d0.w),d1
  516.     ror.w    #5,d0
  517.     ori.w    #$bfa,d0
  518. LINE4
  519.     btst    #6,2(a6)
  520.     bne.s    LINE4
  521.     eor.w    d1,(a5)
  522.     move.l    a5,$48(a6)
  523.     move.l    a5,$54(a6)
  524.     move.w    d5,$52(a6)
  525.     sub.w    d3,d5
  526.     movem.w    d2/d5,$62(a6)
  527.     move.w    d4,$42(a6)
  528.     move.w    d0,$40(a6)
  529.  
  530.     move.l    #$ffff8000,$72(a6)
  531.     move.w    #$ffff,$44(a6)
  532.     move.w    #40,$60(a6)
  533.     move.w    #40,$66(a6)
  534.  
  535.     addq.w    #1,d3
  536.     lsl.w    #6,d3
  537.     addq.w    #2,d3
  538.     move.w    d3,$58(a6)
  539.     rts
  540.  
  541.  
  542. LINESHIFT
  543.     dc.w    $8000,$4000,$2000,$1000
  544.     dc.w    $0800,$0400,$0200,$0100
  545.     dc.w    $0080,$0040,$0020,$0010
  546.     dc.w    $0008,$0004,$0002,$0001
  547.  
  548. BORRA
  549.     movem.l    ACTSCREEN(pc),d0-d1
  550.     exg    d0,d1
  551.     movem.l    d0-d1,ACTSCREEN
  552.  
  553.     move.w    d0,PLANING+6
  554.     swap    d0
  555.     move.w    d0,PLANING+2
  556.  
  557. BBUSY2    BTST    #14,$DFF002
  558.     BNE    BBUSY2
  559.  
  560.     move.l    d1,$54(a6)
  561.     move.l    #$01000000,$40(a6)
  562.     move.l    #0,$64(a6)
  563.     move.w    #(256*64)+20,$58(a6)
  564.     RTS
  565.  
  566. ACTSCREEN
  567.     dc.l    SHOW,SHOW+10240
  568.  
  569.  
  570. TECLADO
  571.     move.b    $BFEC01,D1
  572. ;    CLR.B    $BFEC01
  573.     NOT.B    D1
  574.     ROR.B    #1,D1
  575.     CMP.B    #$3D,D1
  576.     BNE    TEC2
  577.     add.w    #STEPS,XP
  578.     BRA    TECFIN
  579. TEC2    CMP.B    #$3E,D1
  580.     BNE    TEC3
  581.     SUB.W    #STEPS,XP
  582.     BRA    TECFIN
  583. TEC3    CMP.B    #$2D,D1
  584.     BNE    TEC4
  585.     add.w    #STEPS,YP
  586.     BRA    TECFIN
  587. TEC4    CMP.B    #$2E,D1
  588.     BNE    TEC5
  589.     SUB.W    #STEPS,YP
  590.     BRA    TECFIN
  591. TEC5    CMP.B    #$1D,D1
  592.     BNE    TEC6
  593.     add.w    #STEPS,ZP
  594.     BRA    TECFIN
  595. TEC6    CMP.B    #$1E,D1
  596.     BNE    TECFIN
  597.     SUB.W    #STEPS,ZP
  598. TECFIN
  599.     RTS
  600.  
  601. ;*************************************************************
  602. ;*----------    DATOS CORRESPONDIENTES A LAS 3D       ----------*
  603. ;*************************************************************
  604.  
  605. RND1    DC.L    0
  606. RND2    DC.L    0
  607. ZANGLE    DC.W    0
  608. YANGLE    DC.W    180
  609. XANGLE    DC.W    0
  610. ZP    DC.W    0
  611. YP    DC.W    0
  612. XP    DC.W    0
  613. ZDESP    DC.W    0
  614. YDESP    DC.W    0
  615. XDESP    DC.W    0
  616. ZSIN    DC.W    0
  617. ZCOS    DC.W    0
  618. YSIN    DC.W    0
  619. YCOS    DC.W    0
  620. XSIN    DC.W    0
  621. XCOS    DC.W    0
  622. DIST    DC.W    10
  623. ZOBJ    DC.W    OBJ
  624.  
  625.  
  626. ;*** X e Y ***
  627. ;
  628. ;XYS    dcb.W    POINTS*2
  629.  
  630.  
  631.  
  632.  
  633. ;-----------    TABLA DE SENOS Y COSENOS    -----------
  634. SINUSTAB
  635.     DC.W   286,16382,572,16374,857,16362,1143,16344,1428,16322,1713,16294,1997,16262,2280,16225,2563,16182,2845,16135
  636.     DC.W   3126,16083,3406,16026,3685,15964,3964,15897,4240,15826,4516,15749,4790,15668,5063,15582,5334,15491,5603,15396
  637.     DC.W   5871,15296,6137,15191,6402,15082,6664,14968,6924,14849,7182,14726,7438,14598,7692,14466,7943,14330,8192,14189
  638.     DC.W   8438,14044,8682,13895,8923,13741,9162,13583,9397,13421,9630,13255,9860,13085,10087,12911,10311,12733,10531,12551
  639.     DC.W   10749,12365,10963,12176,11174,11983,11381,11786,11585,11586,11785,11382,11982,11174,12175,10963,12365,10749,12551,10532
  640.     DC.W   12732,10311,12910,10087,13085,9860,13255,9631,13421,9398,13583,9162,13741,8924,13894,8683,14044,8439,14189,8192
  641.     DC.W   14330,7944,14466,7692,14598,7439,14726,7183,14849,6925,14967,6664,15081,6402,15191,6138,15296,5872,15396,5604
  642.     DC.W   15491,5335,15582,5064,15668,4791,15749,4517,15826,4241,15897,3964,15964,3686,16026,3407,16083,3127,16135,2846
  643.     DC.W   16182,2564,16224,2281,16262,1997,16294,1713,16322,1429,16344,1144,16362,858,16374,573,16381,287,16384,1
  644.     DC.W   16382,-285,16374,-571,16362,-857,16344,-1142,16322,-1427,16294,-1712,16262,-1996,16225,-2279,16182,-2562,16135,-2844
  645.     DC.W   16083,-3125,16026,-3406,15964,-3685,15898,-3963,15826,-4240,15750,-4515,15668,-4789,15582,-5062,15492,-5333,15396,-5603
  646.     DC.W   15296,-5871,15191,-6137,15082,-6401,14968,-6663,14849,-6923,14726,-7181,14599,-7437,14467,-7691,14330,-7942,14189,-8191
  647.     DC.W   14044,-8438,13895,-8681,13741,-8922,13584,-9161,13422,-9397,13256,-9629,13085,-9859,12911,-10086,12733,-10310,12552,-10531
  648.     DC.W   12366,-10748,12176,-10962,11983,-11173,11786,-11380,11586,-11584,11382,-11785,11175,-11982,10964,-12175,10750,-12364,10532,-12550
  649.     DC.W   10312,-12732,10088,-12910,9861,-13084,9631,-13254,9398,-13420,9163,-13582,8924,-13740,8683,-13894,8439,-14043,8193,-14188
  650.     DC.W   7944,-14329,7693,-14466,7439,-14598,7183,-14725,6925,-14848,6665,-14967,6403,-15081,6139,-15190,5873,-15295,5605,-15395
  651.     DC.W   5335,-15491,5064,-15582,4792,-15668,4517,-15749,4242,-15825,3965,-15897,3687,-15964,3408,-16026,3128,-16083,2846,-16135
  652.     DC.W   2564,-16182,2282,-16224,1998,-16262,1714,-16294,1429,-16322,1144,-16344,859,-16361,573,-16374,287,-16381,2,-16384
  653.     DC.W   -284,-16382,-570,-16374,-856,-16362,-1141,-16344,-1426,-16322,-1711,-16294,-1995,-16262,-2279,-16225,-2561,-16183,-2843,-16135
  654.     DC.W   -3125,-16083,-3405,-16026,-3684,-15964,-3962,-15898,-4239,-15826,-4514,-15750,-4789,-15669,-5061,-15583,-5333,-15492,-5602,-15397
  655.     DC.W   -5870,-15296,-6136,-15192,-6400,-15082,-6662,-14968,-6923,-14850,-7181,-14727,-7437,-14599,-7690,-14467,-7942,-14331,-8190,-14190
  656.     DC.W   -8437,-14045,-8681,-13895,-8922,-13742,-9160,-13584,-9396,-13422,-9629,-13256,-9859,-13086,-10086,-12912,-10309,-12734,-10530,-12552
  657.     DC.W   -10747,-12366,-10962,-12177,-11172,-11984,-11380,-11787,-11584,-11587,-11784,-11383,-11981,-11175,-12174,-10964,-12364,-10750,-12550,-10533
  658.     DC.W   -12732,-10312,-12910,-10089,-13084,-9862,-13254,-9632,-13420,-9399,-13582,-9163,-13740,-8925,-13893,-8684,-14043,-8440,-14188,-8194
  659.     DC.W   -14329,-7945,-14465,-7694,-14597,-7440,-14725,-7184,-14848,-6926,-14967,-6666,-15081,-6404,-15190,-6139,-15295,-5873,-15395,-5606
  660.     DC.W   -15491,-5336,-15581,-5065,-15667,-4792,-15749,-4518,-15825,-4243,-15897,-3966,-15964,-3688,-16026,-3409,-16083,-3128,-16135,-2847
  661.     DC.W   -16182,-2565,-16224,-2282,-16262,-1999,-16294,-1715,-16321,-1430,-16344,-1145,-16361,-860,-16374,-574,-16381,-288,-16384,-2
  662.     DC.W   -16382,284,-16374,569,-16362,855,-16344,1141,-16322,1426,-16294,1710,-16262,1994,-16225,2278,-16183,2561,-16136,2843
  663.     DC.W   -16083,3124,-16026,3404,-15965,3683,-15898,3961,-15826,4238,-15750,4514,-15669,4788,-15583,5061,-15492,5332,-15397,5601
  664.     DC.W   -15297,5869,-15192,6135,-15083,6399,-14969,6662,-14850,6922,-14727,7180,-14599,7436,-14467,7690,-14331,7941,-14190,8190
  665.     DC.W   -14045,8436,-13896,8680,-13742,8921,-13584,9160,-13422,9395,-13256,9628,-13086,9858,-12912,10085,-12734,10309,-12553,10529
  666.     DC.W   -12367,10747,-12177,10961,-11984,11172,-11788,11379,-11587,11583,-11383,11784,-11176,11981,-10965,12174,-10751,12363,-10533,12549
  667.     DC.W   -10313,12731,-10089,12909,-9862,13083,-9632,13253,-9400,13419,-9164,13581,-8926,13739,-8685,13893,-8441,14042,-8194,14188
  668.     DC.W   -7946,14328,-7694,14465,-7441,14597,-7185,14725,-6927,14848,-6667,14966,-6404,15080,-6140,15190,-5874,15295,-5606,15395
  669.     DC.W   -5337,15490,-5066,15581,-4793,15667,-4519,15749,-4243,15825,-3966,15897,-3688,15963,-3409,16025,-3129,16082,-2848,16135
  670.     DC.W   -2566,16182,-2283,16224,-2000,16262,-1716,16294,-1431,16321,-1146,16344,-860,16361,-575,16374,-289,16381,-3,16384
  671.  
  672. COPPER    
  673.     DC.W    $0100,$1200,$008E,$2C81,$0090,$2CC1
  674.     DC.W    $0092,$0038,$0094,$00D0,$0108,$0000
  675.     DC.W    $010A,$0000,$0180,$0000,$0182,$0FF0
  676.     DC.W    $0184,$0FF0,$0186,$0FF0,$0102,$0001
  677. PLANING    DC.W    $00E0,$0000,$00E2,$0000
  678.     DC.W    $00E4,$0000,$00E6,$0000
  679. ;    DC.W    $B001,$FFFE,$0180,$0004
  680. ;    DC.W    $E001,$FFFE,$0108,$FF88,$010A,$FF88
  681. ;    DC.W    $0182,$0660,$0184,$0660,$0186,$0660
  682.     DC.W    $FFFF,$FFFE
  683.  
  684. OBJECT
  685.     DC.W    25,0,0
  686.     DC.W    50,0,0
  687.     DC.W    75,25,0
  688.     DC.W    75,50,0
  689.     DC.W    50,75,0
  690.     DC.W    25,75,0
  691.     DC.W    0,50,0
  692.     DC.W    0,25,0
  693.  
  694. OBJ2    DC.W    25,0,20
  695.     DC.W    50,0,20
  696.     DC.W    75,25,20
  697.     DC.W    75,50,20
  698.     DC.W    50,75,20
  699.     DC.W    25,75,20
  700.     DC.W    0,50,20
  701.     DC.W    0,25,20
  702.  
  703. OBJ3    DC.W    25,0,-20
  704.     DC.W    50,0,-20
  705.     DC.W    75,25,-20
  706.     DC.W    75,50,-20
  707.     DC.W    50,75,-20
  708.     DC.W    25,75,-20
  709.     DC.W    0,50,-20
  710.     DC.W    0,25,-20
  711.  
  712. OBJ4    DC.W    25,0,-40
  713.     DC.W    50,0,-40
  714.     DC.W    75,25,-40
  715.     DC.W    75,50,-40
  716.     DC.W    50,75,-40
  717.     DC.W    25,75,-40
  718.     DC.W    0,50,-40
  719.     DC.W    0,25,-40
  720.  
  721. OBJ5    DC.W    25,0,40
  722.     DC.W    50,0,40
  723.     DC.W    75,25,40
  724.     DC.W    75,50,40
  725.     DC.W    50,75,40
  726.     DC.W    25,75,40
  727.     DC.W    0,50,40
  728.     DC.W    0,25,40
  729.  
  730. OBJ6    DC.W    25,0,60
  731.     DC.W    50,0,60
  732.     DC.W    75,25,60
  733.     DC.W    75,50,60
  734.     DC.W    50,75,60
  735.     DC.W    25,75,60
  736.     DC.W    0,50,60
  737.     DC.W    0,25,60
  738. CUAD
  739.     DC.W    0,0,0
  740.     DC.W    50,0,0
  741.     DC.W    50,50,0
  742.     DC.W    0,50,0
  743.  
  744. CUBO
  745.     dc.w    -25,-25,25    ;V 1
  746.     dc.w    25,-25,25    ;V 2
  747.     dc.w    25,25,25    ;V 3
  748.     dc.w    -25,25,25    ;V 4
  749.     dc.w    -25,-25,-25    ;V 5
  750.     dc.w    25,-25,-25    ;V 6
  751.     dc.w    25,25,-25    ;V 7
  752.     dc.w    -25,25,-25    ;V 8
  753.  
  754.     dc.w    -20,-20,50    ;V 9
  755.     dc.w    20,-20,50    ;V10
  756.     dc.w    20,20,50    ;V11
  757.     dc.w    -20,20,50    ;V12
  758.     dc.w    -20,-20,-20    ;V13
  759.     dc.w    20,-20,-20    ;V14
  760.     dc.w    20,20,-20    ;V15
  761.     dc.w    -20,20,-20    ;V16
  762.  
  763.     dc.w    -15,-15,75    ;V17
  764.     dc.w    15,-15,75    ;V18
  765.     dc.w    15,15,75    ;V19
  766.     dc.w    -15,15,75    ;V20
  767.     dc.w    -15,-15,-15    ;V21
  768.     dc.w    15,-15,-15    ;V22
  769.     dc.w    15,15,-15    ;V23
  770.     dc.w    -15,15,-15    ;V24
  771.  
  772.     dc.w    -10,-10,10    ;V25
  773.     dc.w    10,-10,10    ;V26
  774.     dc.w    10,10,10    ;V27
  775.     dc.w    -10,10,10    ;V28
  776.     dc.w    -10,-10,-100    ;V29
  777.     dc.w    10,-10,-100    ;V30
  778.     dc.w    10,10,-100    ;V31
  779.     dc.w    -10,10,-100    ;V32
  780.  
  781.  
  782. CONCUBO
  783.     dc.w    $0112,0*DEC,3*DEC,3*DEC,2*DEC,2*DEC,1*DEC,1*DEC,0*DEC;Cara 1
  784.     dc.w    $0112,1*DEC,2*DEC,2*DEC,6*DEC,6*DEC,5*DEC,5*DEC,1*DEC;Cara 2
  785.     dc.w    $0112,4*DEC,5*DEC,5*DEC,6*DEC,6*DEC,7*DEC,7*DEC,4*DEC;Cara 3
  786.     dc.w    $0112,0*DEC,4*DEC,4*DEC,7*DEC,7*DEC,3*DEC,3*DEC,0*DEC;Cara 4
  787.     dc.w    $0112,4*DEC,0*DEC,0*DEC,1*DEC,1*DEC,5*DEC,5*DEC,4*DEC;Cara 5
  788.     dc.w    $0112,3*DEC,7*DEC,7*DEC,6*DEC,6*DEC,2*DEC,2*DEC,3*DEC;Cara 6
  789.  
  790.     dc.w    $0112,8*DEC,11*DEC,11*DEC,10*DEC,10*DEC,9*DEC,9*DEC,8*DEC;Cara 1
  791.     dc.w    $0112,9*DEC,10*DEC,10*DEC,14*DEC,14*DEC,13*DEC,13*DEC,9*DEC;Cara 2
  792.     dc.w    $0112,12*DEC,13*DEC,13*DEC,14*DEC,14*DEC,15*DEC,15*DEC,12*DEC;Cara 3
  793.     dc.w    $0112,8*DEC,12*DEC,12*DEC,15*DEC,15*DEC,11*DEC,11*DEC,8*DEC;Cara 4
  794.     dc.w    $0112,12*DEC,8*DEC,8*DEC,9*DEC,9*DEC,13*DEC,13*DEC,12*DEC;Cara 5
  795.     dc.w    $0112,11*DEC,15*DEC,15*DEC,14*DEC,14*DEC,10*DEC,10*DEC,11*DEC;Cara 6
  796.  
  797.     dc.w    $0112,16*DEC,19*DEC,19*DEC,18*DEC,18*DEC,17*DEC,17*DEC,16*DEC;Cara 1
  798.     dc.w    $0112,17*DEC,18*DEC,18*DEC,22*DEC,22*DEC,21*DEC,21*DEC,17*DEC;Cara 2
  799.     dc.w    $0112,20*DEC,21*DEC,21*DEC,22*DEC,22*DEC,23*DEC,23*DEC,20*DEC;Cara 3
  800.     dc.w    $0112,16*DEC,20*DEC,20*DEC,23*DEC,23*DEC,19*DEC,19*DEC,16*DEC;Cara 4
  801.     dc.w    $0112,20*DEC,16*DEC,16*DEC,17*DEC,17*DEC,21*DEC,21*DEC,20*DEC;Cara 5
  802.     dc.w    $0112,19*DEC,23*DEC,23*DEC,22*DEC,22*DEC,18*DEC,18*DEC,19*DEC;Cara 6
  803.  
  804.     dc.w    $0112,24*DEC,27*DEC,27*DEC,26*DEC,26*DEC,25*DEC,25*DEC,24*DEC;Cara 1
  805.     dc.w    $0112,25*DEC,26*DEC,26*DEC,30*DEC,30*DEC,29*DEC,29*DEC,25*DEC;Cara 2
  806.     dc.w    $0112,28*DEC,29*DEC,29*DEC,30*DEC,30*DEC,31*DEC,31*DEC,28*DEC;Cara 3
  807.     dc.w    $0112,24*DEC,28*DEC,28*DEC,31*DEC,31*DEC,27*DEC,27*DEC,24*DEC;Cara 4
  808.     dc.w    $0112,28*DEC,24*DEC,24*DEC,25*DEC,25*DEC,29*DEC,29*DEC,28*DEC;Cara 5
  809.     dc.w    $0112,27*DEC,31*DEC,31*DEC,30*DEC,30*DEC,26*DEC,26*DEC,27*DEC;Cara 6
  810.  
  811.     dc.w    $ffff
  812. CONCUAD
  813.     DC.W    0*DEC,1*DEC,1*DEC,2*DEC,2*DEC,3*DEC,3*DEC,0*DEC,$FFFF
  814.  
  815. CONECT2
  816.     DC.W    0*DEC,1*DEC,1*DEC,2*DEC,2*DEC,3*DEC,3*DEC,4*DEC
  817.     DC.W    4*DEC,5*DEC,5*DEC,6*DEC,6*DEC,7*DEC,7*DEC,0*DEC,$FFFF
  818. CONECT3
  819.     DC.W    0*DEC,1*DEC,0*DEC,2*DEC,0*DEC,3*DEC,0*DEC,4*DEC,0*DEC,5*DEC,0*DEC,6*DEC,0*DEC,7*DEC
  820.     DC.W    1*DEC,2*DEC,1*DEC,3*DEC,1*DEC,4*DEC,1*DEC,5*DEC,1*DEC,6*DEC,1*DEC,7*DEC
  821.     DC.W    2*DEC,3*DEC,2*DEC,4*DEC,2*DEC,5*DEC,2*DEC,6*DEC,2*DEC,7*DEC
  822.     DC.W    3*DEC,4*DEC,3*DEC,5*DEC,3*DEC,6*DEC,3*DEC,7*DEC
  823.     DC.W    4*DEC,5*DEC,4*DEC,6*DEC,4*DEC,7*DEC
  824.     DC.W    5*DEC,6*DEC,5*DEC,7*DEC
  825.     DC.W    6*DEC,7*DEC
  826.     DC.W    $FFFF
  827.  
  828.     dcb.b    10240
  829. SHOW
  830.     dcb.W    10240
  831.  
  832. SHOW2
  833.     dcb.b    10240
  834.  
  835.  
  836.